#ifndef QxAllSampleFactory_HPP
#define QxAllSampleFactory_HPP

#include <Base/QxAbstractFactory.hpp>

class QxAbstractPlugin;

class QxAllSampleFactory : public QxAbstractFactory
{
public:

  static const QxAllSampleFactory& instance();
  ~QxAllSampleFactory();

  QString name() const;
  QString description() const;

  QStringList categories() const;

  QStringList pluginNameList( const QString& category ) const;
  QxAbstractPlugin* findPluginByName( const QString& pluginName ) const;

private:

  QxAllSampleFactory();

  class QxAllSampleFactoryPrivate;
  QScopedPointer<QxAllSampleFactoryPrivate>         _pd;
};

#define theAllSampleFactory QxAllSampleFactory::instance()

#endif // QxAllSampleFactory_HPP